package testes;

import static org.junit.Assert.*;

import java.util.HashSet;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.quasar.copaPaises.businessLayer.*;
public class GrupoTest {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		CalendarDate.allInstances.clear();
		  Campeonato.allInstances.clear();
		  Cartao.allInstances.clear();
		  Cidade.allInstances.clear();
		  Clube.allInstances.clear();
		  Continente.allInstances.clear();
		  Equipa.allInstances.clear();
		  Estadio.allInstances.clear();
		  Golo.allInstances.clear();
		  Grupo.allInstances.clear();
		  Jogador.allInstances.clear();
		  Jogo.allInstances.clear();
		  Membro.allInstances.clear();
		  Pais.allInstances.clear();
		  Participacao.allInstances.clear();
		  Participante.allInstances().clear();
		  Treinador.allInstances.clear();
	}

	@After
	public void tearDown() throws Exception {
		CalendarDate.allInstances.clear();
		  Campeonato.allInstances.clear();
		  Cartao.allInstances.clear();
		  Cidade.allInstances.clear();
		  Clube.allInstances.clear();
		  Continente.allInstances.clear();
		  Equipa.allInstances.clear();
		  Estadio.allInstances.clear();
		  Golo.allInstances.clear();
		  Grupo.allInstances.clear();
		  Jogador.allInstances.clear();
		  Jogo.allInstances.clear();
		  Membro.allInstances.clear();
		  Pais.allInstances.clear();
		  Participacao.allInstances.clear();
		  Participante.allInstances().clear();
		  Treinador.allInstances.clear();
	}

	@Test
	public final void testGrupo() {
		Grupo g = new Grupo();
		assertNotNull(g);
	}

	@Test
	public final void testGrupoStringFaseCampeonatoCampeonato() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		assertNotNull(g);
	}

	@Test
	public final void testDesignacao() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		
		assertTrue(g.designacao().equals("Grupo A"));
	}

	@Test
	public final void testSetDesignacao() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		g.setDesignacao("Grupo B");
		assertTrue(g.designacao().equals("Grupo B"));
	}

	@Test
	public final void testFase() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		
		assertTrue(g.fase().equals(FaseCampeonato.Final));
	}

	@Test
	public final void testSetFase() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		g.setFase(FaseCampeonato.Grupos);
		assertTrue(g.fase().equals(FaseCampeonato.Grupos));
	}

	@Test
	public final void testCampeonato() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		
		assertSame(g.campeonato(), c);
	}

	@Test
	public final void testSetCampeonato() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		Campeonato c2 = new Campeonato();
		g.setCampeonato(c2);
		assertSame(g.campeonato(), c2);
	}

	@Test
	public final void testJogos() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		Jogo j1 = new Jogo();
		j1.setGrupo(g);
		assertTrue(g.jogos().contains(j1));
	}

	@Test
	public final void testSetJogos() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		Jogo j1 = new Jogo();
		HashSet<Jogo> jogos = new HashSet<Jogo>();
		jogos.add(j1);
		g.setJogos(jogos);
		assertTrue(g.jogos().contains(j1));
	}

	@Test
	public final void testPaises() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		Pais p1 = new Pais();
		HashSet<Pais> paises = new HashSet<Pais>();
		paises.add(p1);
		g.setPaises(paises);
		assertTrue(g.paises().contains(p1));
	}

	@Test
	public final void testSetPaises() {
		Campeonato c= new Campeonato();
		Grupo g = new Grupo("Grupo A", FaseCampeonato.Final, c);
		Pais p1 = new Pais();
		HashSet<Pais> paises = new HashSet<Pais>();
		paises.add(p1);
		g.setPaises(paises);
		assertTrue(g.paises().contains(p1));
	}

	@Test
	public final void testToString() {
		Grupo g = new Grupo();
		assertEquals(g.toString(), "Grupo [designacao=null, fase=null, campeonato=null]\n");
	}

}
